#ifndef __WINDOW_JUEGO_H__
#define __WINDOW_JUEGO_H__

#include "window.h"
#include "Tablero.h"
#include "sdlImage.h"
#include "sdlSound.h"
#include "ReceptorMovs.h"
#include <jsoncpp/json.h>
#include <utility>
#include "../Common/Mutex.h"
#include "../Common/ConditionVariable.h"

class windowJuego: public window{
private:
	Tablero tablero;
	sdlImage background;
	std::pair<unsigned,unsigned> par1;
	std::pair<unsigned,unsigned> par2;
	bool par1Selected;
	bool par2Selected;
	bool noMover;
	ReceptorMovs* receptor;
	SDL_TimerID timer;
	sdlSound sndBotClick; //Sonido al hacer click en un botón
	sdlSound sndMatch; //Sonido al haber match
	Mutex mut;
	ConditionVariable condVar;
public:
	windowJuego(sdlScreen&);
	virtual void show();
	virtual bool handleEvent(const SDL_Event&, window*&);
	~windowJuego();
private:
	//Actualiza el tablero con un json Recido
	window* actualizarTablero(Json::Value&);
	//Maneja la recepción de datos
	window* handleRecepcion();
	//Envia un movimiento
	void enviarMov();
	//Muestra los puntajes de los jugadores
	void mostrarScore(Json::Value&,unsigned = 0);
	//Maneja el fin del juego
	window* handleFin(Json::Value&);
};

#endif // __WINDOW_JUEGO_H__
